#pragma once

#include"../Base.h"

//https://ntdiff.github.io/
#define WINDOWS_1803 17134
#define WINDOWS_1809 17763
#define WINDOWS_1903 18362
#define WINDOWS_1909 18363
#define WINDOWS_2004 19041
#define WINDOWS_20H2 19569
#define WINDOWS_21H1 20180





EXTERN_C 
NTKERNELAPI PPEB NTAPI PsGetProcessPeb(IN PEPROCESS Process);

EXTERN_C
PVOID GetSystemModuleBase(LPCSTR moduleName);
EXTERN_C
NTSTATUS GetModuleBaseAddress(int processId, const char* moduleName, ULONG_PTR* baseAddress);

EXTERN_C
NTSTATUS ReadProcessMemory(int pid, ULONG_PTR Address, ULONG_PTR AllocatedBuffer, SIZE_T size, SIZE_T* read);

EXTERN_C
NTSTATUS WriteProcessMemory(int pid, ULONG_PTR Address, ULONG_PTR AllocatedBuffer, SIZE_T size, SIZE_T* written);

EXTERN_C
PVOID MapVirtualForPhyAddressByPid(HANDLE pid, ULONG_PTR Pa);

EXTERN_C
VOID  UnMapVirtualForPhyAddress(HANDLE handle, PVOID Va);